#ifndef __LOG_MESSAGE_H__
#define __LOG_MESSAGE_H__

#include <string>
#include <thread>

#include "log_level.hpp"
#include "../util/utility.hpp"

// 日志输出要素: 日志等级、时间、源文件名称、源代码行号、线程ID、日志器名称、有效载荷信息

namespace log_system
{
  struct LogMessage
  {
    log_system::LogLevel::Level _level; // 日志等级
    time_t _time;                       // 日志产生时间
    std::string _file;                  // 源文件名称
    size_t _line;                       // 行号
    std::thread::id _threadID;          // 线程ID
    std::string _logger;                // 日志器
    std::string _payload;               // 有效载荷信息

    LogMessage(const log_system::LogLevel::Level &level,
               const std::string &file,
               size_t line,
               const std::string &logger,
               const std::string &payload)
        : _level(level),
          _time(log_system::utility::Date::getTime()),
          _file(file),
          _line(line),
          _threadID(std::this_thread::get_id()),
          _logger(logger),
          _payload(payload) {}
  };

} // namespace log_system

#endif // #ifndef __LOG_MESSAGE_H__
